﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Liquidaciones.Models
{
    [Table("Liquidacion")]
    public class Liquidacion : IComparable
    {
        [Column("id")]
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int IdLiquidacion { get; set; }

        [Column("id_liquidador")]
        public Guid IdLiquidador { get; set; }

        [ForeignKey("IdLiquidador")]
        public virtual Liquidador Liquidador { get; set; }

        [Column("id_empleado")]
        public Guid IdEmpleado { get; set; }

        [ForeignKey("IdEmpleado")]
        public virtual Empleado Empleado { get; set; }

        [Column("fecha")]
        public DateTime Fecha { get; set; }

        [Column("bruto")]
        public double Bruto { get; set; }
        
        [Column("neto")]
        public double Neto { get; set; }
        
        [Column("aporte_obra_social")]
        public double AporteObraSocial { get; set; }

        [Column("aporte_issjp")]
        public double AporteISSJP { get; set; }

        [Column("aporte_jubilacion")]
        public double AporteJubilacion { get; set; }

        [Column("categoria")]
        public double Categoria { get; set; }

        //[Column("categoria")]
        //public String Categoria { get; set; }

        public Liquidacion() { }

        public Liquidacion(Liquidador liquidador, Empleado empleado, double bruto, double neto, double aporteObraSocial, double aporteISSJP, double aporteJubilacion, double categoria)
        {
            this.Liquidador = liquidador;
            this.Empleado = empleado;
            this.Fecha = DateTime.Now;
            this.Bruto = bruto;
            this.Neto = neto;
            this.AporteObraSocial = aporteObraSocial;
            this.AporteISSJP = aporteISSJP;
            this.AporteJubilacion = aporteJubilacion;
            this.Categoria = categoria;
        }

        public int CompareTo(object obj)
        {
            Liquidacion l = (Liquidacion)obj;
            if (this.Fecha < l.Fecha) return 1;
            else if (this.Fecha > l.Fecha) return -1;
            else return 0;
            //return this.Fecha.CompareTo(((Liquidacion)obj).Fecha);
        }
    }
}